The present invention relates in general to the data processing field. More specifically, the present invention relates to the field of Object Oriented framework mechanisms.
The development of the EDVAC computer system of 1948 is often cited as the beginning of the computer era. Since that time, computer systems have evolved into extremely sophisticated devices. Due to competitive forces and differing performance requirements, a variety of different types of computers (i.e., platforms) have evolved. One of the primary differences between platforms is the operating system the platform uses. Each operating system provides different features, and the characteristics of platforms vary according to the specific operating system employed. Examples of popular operating systems include AIX, OS/2, MS-DOS, and Windows.
In the early years of computers, each different platform had a unique dedicated software development environment. The programming tools were written specifically for the platform on which they were to be used, and the software developed on a platform was typically run on the same platform. If a programmer needed to change from one platform to another, he or she would be faced with an entirely different set of programming tools on the new platform that would require a substantial time investment to acquire proficiency using these new tools. In addition, if a programmer needed to develop software targeted to more than one platform, this would generally require that the programmer have each of the target platforms on his or her desk, and that the programmer become proficient at using the development tools on each platform. In the alternative, developers of programming tools could port their processing tools from one platform to another. However, this approach is not economical due to the inherent inefficiencies of making the tools compatible with other platforms, and tool vendors have traditionally not offered this type of inter-platform support for their tools.
Source code in any compiled language needs to be processed. In most cases, programs are not completely recompiled every time they are changed. Only the modules that are affected by the changes are recompiled to save on time and resources. Programming tools typically include processing tools that are generically referred to as xe2x80x9cmake tools.xe2x80x9d A make tool analyzes the various modules that comprise a computer program and only compile those modules that need to be compiled. Various different make tools exist for different platforms. For example, AIX has a processing tool known simply as xe2x80x9cmake.xe2x80x9d OS/2 has a similar processing tool called xe2x80x9cnmake.xe2x80x9d Make tools are included in the group of source code processing tools that may be implemented within the framework. Make tools are also commonly referred to as processing tools or reprocessing tools. As used herein, the terms processing tool and reprocessing tool are used interchangeably to denote any type of programming tool (such as a make tool) that is typically specific to a particular programming environment (i.e., development platform).
The term xe2x80x9cmodulexe2x80x9d as used herein is a generic term for any portion of source code that may need to be processed. It may refer to a procedural routine or to an object. While the preferred embodiment herein is implemented using object oriented technology, the term module is used to distinguish a portion of source code that may need processing from objects in the framework.
An example will illustrate the problems associated with developing software on one development platform targeted to for different target platforms. If a programmer were developing software on an OS/2 development platform for an OS/2 target platform, for an MVS target platform, and for an AIX target platform, the programmer would typically develop the software once on the first platform (e.g., OS/2), process (i.e., compile) the software using the processing tool native to the first platform, make modifications to accommodate a second platform (e.g., MVS), process (or reprocess) the software using the processing tool native to the second platform, make modifications to accommodate the third platform (e.g., AIX), and process (or reprocess) the software using the processing tool native to the third platform. Note that this process requires a programmer to be proficient using the processing tools on all three target platforms. Each platform requires a substantial investment in time for a programmer to achieve proficiency using the programming tools (e.g., make tools) for that platform. In addition, becoming proficient in using three different sets of processing tools may be difficult due to the confusion that may be created by the different commands and protocols that each requires.
If a new target platform emerges, a programmer must now become familiar with all the programming tools for the new platform, including the reprocessing tools. There is currently no easy way for a programmer to extend existing processing tools for one platform to a second platform.
As more software i s developed for numerous different target platforms, the need for better mechanisms for processing source code for multiple target platforms becomes more apparent and more acute. Without a mechanism that can b e readily customized and extended to allow reprocessing on multiple target platforms using reprocessing tools native to one target platform, the rate of development of computer software will be impaired.
According to the present invention, an object oriented framework for source code processing provides an infrastructure that embodies the steps necessary to process source code and a mechanism to extend the framework to fit a particular scenario for processing source code. Certain core functions are provided by the framework, which interact with extensible functions provided by the framework user. The architecture of the framework allows a developer to select the native processing tool of their choice, and provides an infrastructure for using that processing tool with other platforms (eg., targets, etc.) The extensible functions allow the processing tools of a new platform to be easily incorporated into the framework. The framework thus allows a programming environment with development on multiple platforms that targets multiple platforms, which may be easily customized to include new platforms and new processing tools.
The framework mechanism of the present invention was designed and constructed using object-oriented technology. Those who are unfamiliar with object-oriented technology, or with object-oriented framework mechanisms, should read the object-oriented overview section of the Description of the Preferred Embodiments section.